1. Field of the Invention
This invention pertains generally to link driver configuration for IEEE Standard 1394 nodes. More particularly, the invention is a method for dynamic link driver configuration of link driver architecture for IEEE Standard 1394 modules.
2. The Prior Art
The Institute of Electrical and Electronics Engineers, Inc. (IEEE) defines the IEEE Standard 1394-1995 serial bus architecture in the document “IEEE Standard for a High Performance Serial Bus” published Aug. 30, 1996 which is incorporated herein by reference. In IEEE 1394, the serial bus architecture is defined in terms of nodes. In general, a node is an addressable entity (i.e., a logical entity with a unique address), which can be independently reset and identified. More than one node may reside on a single module, and more than one unit may reside in a single node.
A module is a physical device, comprising one or more nodes that share a physical interface. The address space provided by a node can be directly mapped to one or more units. A unit is a logical entity, such as a disk controller, which corresponds to unique I/O (input/output) driver software. On a multifunction node, for example, a processor and I/O interfaces could be different units on the same node.
During initialization (startup) of a module, certain hardware devices of the module are checked and appropriate drivers are loaded as is known in the art. For is example, FIG. 1 illustrates a typical module device 1 having first and second nodes 2a, 2b. Nodes 2a, 2b include respective link layer services (LINK) 3a, 3b and physical layer services (PHY) 4a, 4b. During the start up of module 1, link driver 5a is loaded to configure LINK 3a, and link driver 5b is loaded to configure LINK 3b. The link drivers 5a, 5b provide necessary configuration information which allows the LINKs 3a, 3b to carry out its link layer services. The prior art implementation provides a static link driver which is configured identically for each node 2a, 2b without regard for the type of communication that will be carried out by the node. Thus, link driver 5a is configured the same way as 5b, even though node 2a may carry out different communication than node 2b. 
The prior art implementation of providing a static configuration for link drivers is not always optimal. For example, in IEEE 1394 communication, nodes may carryout asynchronous and isochronous communication. In asynchronous communication such as SBP (serial bus protocol), it would be advantageous to have a link device configured for data pumping to provide optimum performance for such asynchronous transfers. On the other hand, in isochronous communication such as AV/C (audio/video control), no advantage is provided if the link device is configured for data pumping, since AV/C commands do not have high bandwidth requirements. Rather, AV/C communication would benefit if the link device is configured for transferring isochronous data. Thus, the current implementation of providing a static configuration link driver for all LINKS (3a, 3b, for example) is a disadvantage.
As an example, LINK 3a may be able to receive and process 2054 byte packet sizes, while LINK 3b may be able to receive and process only 512 byte packet sizes. The prior art implementation would configure link device drivers 5a, 5b to handle 512 byte packet sizes, even though LINK 3a is able to handle larger (2054 byte) sizes. Thus, the capabilities of LINK 3a are not fully utilized where static link driver configurations are provided as is carried out in the prior art.
Accordingly, there is a need for a method which provides multiple link device driver configurations based on the capabilities of the link device and based on the specific behaviors of the link device. The present invention satisfies these needs, as well as others, and generally overcomes the deficiencies found in the background art.
An object of the invention is to provide a method for configuring link device drivers which overcomes the deficiencies of the prior art.
Another object of the invention is to provide a method for configuring link device drivers based on the capabilities of the link device.
Another object of the invention is to provide a method for configuring link device drivers based on the specific behaviors of the link device.
Another object of the invention is to provide a method for configuring link device drivers by ascertaining the capabilities of link devices before providing the configuration information for the link device drivers.
Further objects and advantages of the invention will be brought out in the following portions of the specification, wherein the detailed description is for the purpose of fully disclosing the preferred embodiment of the invention without placing limitations thereon.